牛客入门c刷题笔记

缩短二进制__牛客网

%#o:输出带前导o的八进制数

%#X:输出带前导ox的十六进制数


printf可以使用使用格式控制串“%o”、“%X”分别输出八进制整数和十六进制整数

%-8d:数字靠左对齐输出,共八位,不足的空格补齐

%+8d:数字靠右对齐输出,共八位,不足的空格补齐


取个位数使用的对十取余法以及浮点数强制类型转换为整型


#include 
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d",2<<(n-1));
  //在2进制中,2的表示为00000010
  //我们只使用移位符来完成2的n次方,仅需使这个1往左移动。
  //如4:00000100;8:00001000
  //要注意为什么这里是(n-1)
  //因为2本身已经在第二位了,是2的1次方。
    return 0;
}

原文连接:https://www.cnblogs.com/shrimp-can/p/5145351.html

移位运算符包括左移"<<“和右移”>>"

左移运算符<<:

1.无符号

语法格式:需要移位的数字<<移位的次数n

运算规则:按二进制形式把所有数字向左移动相应的位数,高位移出(舍弃),低位的空位补0。相当于乘以2的n次方

例如:4<<2 ,就是将数字4左移2位

过程:4的二进制形式:00000000 00000000 00000000 00000100;然后把高位2个0移出,其余所有位向左移动2位,低位补0,得到:00000000 00000000 00000000 00010000;十进制数为16,16=4*22。


#include
int main()
{
    int age;
    scanf("%d",&age);
    printf("%lld",age*(long long)3.156e7);
    return 0;
}

3.156e7要声明longlong 才可以把乘积定为longlong,否则随age的int

你可能感兴趣的:(奇技淫巧,c语言,c++,开发语言)