Two General Enum Questions

Given the enum below (which compiles fine)…

  1. Shouldn’t it be derived from long (currently commented out)? It has values with more than 32 shifts in it.

  2. If it is indeed a long, what affect would that have on a 32 bit system?

using System;
namespace Venue.Base
{
 
[Flags]
public enum GroupPermissions // : long 
{
None = 0,
CanViewBoard = 1 << 1,
CanViewOffline = 1 << 2,
CanViewProfiles = 1 << 3,
CanViewAvatars = 1 << 4,
CanViewSignatures = 1 << 5,
CanUseAvatars = 1 << 6,
CanUseSignatures = 1 << 7,
CanAddOwnThreads = 1 << 8,
CanEditOwnThreads = 1 << 9,
CanDeleteOwnThreads = 1 << 10,
CanRemoveOwnThreads = 1 << 11,
CanMoveOwnThreads = 1 << 12,
CanCloseOwnThreads = 1 << 13,
CanOpenOwnThreads = 1 << 14,
CanEditOthersThreads = 1 << 15,
CanDeleteOthersThreads = 1 << 16,
CanRemoveOthersThreads = 1 << 17,
CanMoveOthersThreads = 1 << 18,
CanCloseOthersThreads = 1 << 19,
CanOpenOthersThreads = 1 << 20,
CanAddOwnPosts = 1 << 21,
CanEditOwnPosts = 1 << 22,
CanDeleteOwnPosts = 1 << 23,
CanRemoveOwnPosts = 1 << 24,
CanMoveOwnPosts = 1 << 25,
CanEditOthersPosts = 1 << 26,
CanDeleteOthersPosts = 1 << 27,
CanRemoveOthersPosts = 1 << 28,
CanMoveOthersPosts = 1 << 29,
CanManageUsers = 1 << 30,
CanManagePosts = 1 << 31,
CanManageThreads = 1 << 32,
CanAdministerOptions = 1 << 33,
CanAdministerCodes = 1 << 34,
CanAdministerCategories = 1 << 35,
CanAdministerForums = 1 << 36,
CanAdministerGroups = 1 << 37,
CanAdministerMasks = 1 << 38,
CanAdministerModerators = 1 << 39,
CanAdministerUsers = 1 << 40,
All = int.MaxValue 
}
}