请高手解释这是什么输出方式

来源:百度知道 编辑:UC知道 时间:2024/06/27 10:44:25
static char const* szHexDigits = "0123456789abcdef";
.....
cout << szHexDigits[(b >> 4) & 0x0f]
<< szHexDigits[b & 0x0f]
<< ' ';

b >> 4 表示将操作数b的位向右移4位
&是按位于操作
(b >> 4) & 0x0f(00001111)表示b右移4位再与0x0f按位与得到的数再取"0123456789abcdef"串上的字符

例如int b=5 (00000101)
(b >> 4) & 0x0f(00001111)后是00000000
所以cout << szHexDigits[(b >> 4) & 0x0f]
输出为0
而 szHexDigits[b & 0x0f]00000101 输出为5
即05

int b=17(00010001)
(b >> 4) & 0x0f(00001111)后是00000001即1
而 b& 0x0f 00000001 即1
输出为11

这段代码的作用就是一个十六进制转换程序 将十进制转为16进制数