日常总结:c++中百分号256、/256用处,变量取高八位、低八位

一个十进制数short n = 4544 两个字节

%256:取低八位

十进制形式:4544%256=192
二进制形式:
00010001 11000000&
00000000 11111111 =
00000000 11000000
十六进制形式:
0x11c0&0x00ff=0xc0

/256:取高八位

十进制形式:4544/256=17
二进制形式:
00010001 11000000&
11111111 00000000 >>24=
00010001 00000000
十六进制形式:
0x11c0&0xff00>>24=0x11

下面是取int变量各个字节的代码:

#include <iostream>
#include <bitset> //输出二进制
using namespace std;

int main()
{
	int a = 4544;
	//输出二进制	
	cout << "高8位" << bitset<8>(a >> 24) << endl;				//00000000
	cout << "9-18位" << bitset<8>((a << 8) >> 24) << endl;		//00000000
	cout << "19-24位" << bitset<8>((a << 16) >> 24) << endl;		//00010001
	cout << "低8位" << bitset<8>((a << 24) >> 24) << endl;			//11000000
	//输出10进制,有点问题,低八位1100000000左移变为11000000 00000000 00000000 00000000  
	//右移变为11111111 11111111 11111111 11000000 所以输出为-64
	cout << "高8位" << (a >> 24) << endl;							//0
	cout << "9-18位" << ((a << 8) >> 24) << endl;					//0
	cout << "19-24位" << ((a << 16) >> 24) << endl;					//17
	cout << "低8位" << ((a << 24) >> 24) << endl;					//-64
	//输出10进制 0x是零x 不是大写Ox
	cout << "高8位" << ((a & 0xff000000) >> 24) << endl;				//0
	cout << "9-18位" << ((a & 0x00ff0000) >> 16) << endl;			//0
	cout << "19-24位" << ((a & 0x0000ff00) >> 8) << endl;			//17
	cout << "低8位" << (a & 0x000000ff) << endl;						//192

	//输出8进制
	cout << "高8位" << oct <<((a & 0xff000000) >> 24) << endl;		//0
	cout << "9-18位" << oct << ((a & 0x00ff0000) >> 16) << endl;		//0
	cout << "19-24位" << oct << ((a & 0x0000ff00) >> 8) << endl;		//17
	cout << "低8位" << oct << (a & 0x000000ff) << endl;				//192

	//输出16进制
	cout << "高8位" << hex << ((a & 0xff000000) >> 24) << endl;		//0
	cout << "9-18位" << hex << ((a & 0x00ff0000) >> 16) << endl;		//0
	cout << "19-24位" << hex << ((a & 0x0000ff00) >> 8) << endl;		//17
	cout << "低8位" << hex << (a & 0x000000ff) << endl;				//192
	system("pause");
	return 0;
}
  • 7
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值